package br.uniriotec.pm.app;

import br.uniriotec.pm.business.rules.RuleManager;
import br.uniriotec.pm.business.rules.impl.RuleManagerImpl;
import br.uniriotec.pm.business.service.ServicosComissao;
import br.uniriotec.pm.dao.DAOFactory;
import br.uniriotec.pm.dao.xstream.XStreamDAOFactory;
import br.uniriotec.pm.domain.RegistroVendasMes;
import br.uniriotec.pm.dto.CalculoRegistroVendasMes;

public class App {
	private static String CAMINHO_ARQUIVO_VENDEDORES = "vendedores.txt";
	private static String CAMINHO_ARQUIVO_TABELA_PRECOS = "tabela_precos.txt";
	private static String CAMINHO_ARQUIVO_VENDAS = "vendas.txt";
	private static String CAMINHO_ARQUIVO_REGISTRO_VENDAS_MES = "registro_vendas_mes.txt";
	
	private static String CAMINHO_ARQUIVO_XML_VENDEDORES = "vendedores.xml";
	private static String CAMINHO_ARQUIVO_XML_TABELA_PRECOS = "tabela_precos.xml";
	private static String CAMINHO_ARQUIVO_XML_VENDAS = "vendas.xml";
	private static String CAMINHO_ARQUIVO_XML_REGISTRO_VENDAS_MES = "registro_vendas_mes.xml";
	
	private DAOFactory daoFactory;
	private RuleManager ruleManager;
	private ServicosComissao servicosComissao;
	
	public static void main(String[] args) {
		new App();
	}
	
	private App() {
		
		daoFactory = new XStreamDAOFactory(CAMINHO_ARQUIVO_XML_VENDEDORES, CAMINHO_ARQUIVO_XML_TABELA_PRECOS, CAMINHO_ARQUIVO_XML_VENDAS, CAMINHO_ARQUIVO_XML_REGISTRO_VENDAS_MES);
		ruleManager = new RuleManagerImpl();
		
		servicosComissao = new ServicosComissao(daoFactory, ruleManager);
		
		CalculoRegistroVendasMes calculoComissoesTodosVendedores = servicosComissao.carregarDadosCalculoRegistroVendasMes();
		
		calculoComissoesTodosVendedores.setMesBase(2);
		calculoComissoesTodosVendedores.setAnoBase(2011);
		
		RegistroVendasMes registroVendasMes = servicosComissao.calcularRegistroVendasMes(calculoComissoesTodosVendedores);
		servicosComissao.gravarRegistroVendasMes(registroVendasMes);
		
		/*
		DAOFactory textFileDaoFactory = new TextFileDAOFactory(CAMINHO_ARQUIVO_VENDEDORES, CAMINHO_ARQUIVO_TABELA_PRECOS, CAMINHO_ARQUIVO_VENDAS, CAMINHO_ARQUIVO_REGISTRO_VENDAS_MES);
		
		DAOFactory xmlDaoFactory = new XStreamDAOFactory(CAMINHO_ARQUIVO_XML_VENDEDORES, CAMINHO_ARQUIVO_XML_TABELA_PRECOS, CAMINHO_ARQUIVO_XML_VENDAS, CAMINHO_ARQUIVO_XML_REGISTRO_VENDAS_MES);
		
		DAOTabelaPrecos daoTabelaPrecos = textFileDaoFactory.getDAOTabelaPrecos();
		DAOVenda daoVenda = textFileDaoFactory.getDAOVenda();
		DAOVendedor daoVendedor = textFileDaoFactory.getDAOVendedor();
		
		XStreamDAOTabelaPrecos xmlDaoTabelaPrecos = (XStreamDAOTabelaPrecos) xmlDaoFactory.getDAOTabelaPrecos();
		XStreamDAOVenda xmlDaoVenda = (XStreamDAOVenda) xmlDaoFactory.getDAOVenda();
		XStreamDAOVendedor xmlDaoVendedor = (XStreamDAOVendedor) xmlDaoFactory.getDAOVendedor();
		
		TabelaPrecos tabelaPrecos = daoTabelaPrecos.carregarTabelaPrecos();
		ListaVendedores listaVendedores = daoVendedor.carregarListaVendedores();
		ListaVendas listaVendas = daoVenda.carregarListaVendas(listaVendedores.getListaVendedores(), tabelaPrecos.getListaProdutos());
		
		xmlDaoTabelaPrecos.gravar(tabelaPrecos);
		xmlDaoVenda.gravar(listaVendas);
		xmlDaoVendedor.gravar(listaVendedores);
		*/
	}
}
